package com.yesun.dcm.rpc;

import com.yesun.dcm.commons.extension.Adaptive;
import com.yesun.dcm.commons.extension.SPI;
import com.yesun.dcm.commons.rpc.URL;

@SPI("jdk")//通过SPI指定jdk方式的服务，见META-INF/services/下的service配置
public interface ProxyFactory {

    @Adaptive("proxy")//通过Adaptive注解指定当前方法需要生成动态类，并且指定了proxy参数，默认值为上面的jdk
    <T> Invoker<T> getInvoker(T proxy, Class<T> clazz, URL url);

    @Adaptive("proxy")
    <T> T getProxy(Invoker<T> invoker);
}
